	ASEG
	NAME	('TRANSLATE')
	.Z80	
;       ASSEMBLE USING M80
	TITLE 	KEYBOARD TRANSLATION FOR BIG BOARD

;       The code changes included in TABLE are for use with WORDMASTER and a
;       HONEYWELL keyboard model 104SD30.

	ORG 0100H	;START WHERE CP/M LIKES TO
	NOP
	NOP
	NOP
START:	LD	BC,0100H	;MOVE 256 BYTES (1 PAGE)
	LD	DE,0FE00H	;MOVE TRANSLATE TABLE TO $FE00 (NOT USED BY MON)
	LD	HL,TABLE	;MOVE THE 10 BYTE TRANSLATE PROG.
	LDIR			;MOVE IT
	LD	BC,000AH	;MOVE THE TRANSLATE TABLE
	LD	DE,0FD00H	;MOVE IT TO $FD00
	LD	HL,PROG		;POINT TO TRANSLATE PROG
	LDIR			;MOVE IT
	LD	BC,0003H	;MOVE 3 BYTE ZAP THAT OVERLAYS MONITOR
	LD	DE,0F468H	;OVERLAY ADDR $F468 'A CALL TO INDEX'
	LD	HL,ZAP		;POINT TO ZAP
	LDIR			;MOVE IT WITH OVERKILL
EXIT:	JP	0		;RETURN TO CP/M	
ZAP:	CALL	PROG1		;CALL THE TRANSLATE ROUTINE AT $FD00
PROG1	EQU	0FD00H
PROG:	PUSH	HL		;SAVE
	LD	H,0FEH		;LOAD PAGE ADDRESS OF TABLE
	LD	L,C		;LOAD THE CHAR TO TRANSLATE FROM KEYBOARD
	LD	C,(HL)		;DO THE TRANSLATE
	POP	HL		;RESTORE
INDEX	EQU	0F474H		;CALL INDEX ROUTINE AT $F474
	CALL	INDEX		;CALL IT BECAUSE WE ZAPPED THIS INSTRUCTION
	RET			;NOW BACK TO MONITOR AND CONTINUE KEYBOARD I/O
TABLE:	DEFB	000H		
	DEFB	001H
	DEFB	002H
	DEFB	003H
	DEFB	004H
	DEFB	005H
	DEFB	006H
	DEFB	007H
	DEFB	008H
	DEFB	009H
	DEFB	00AH
	DEFB	00BH
	DEFB	00CH
	DEFB	00DH
	DEFB	00EH
	DEFB	00FH
	DEFB	010H
	DEFB	011H
	DEFB	012H
	DEFB	013H
	DEFB	014H
	DEFB	015H
	DEFB	016H
	DEFB	017H
	DEFB	018H
	DEFB	019H
	DEFB	01AH
	DEFB	01BH
	DEFB	01CH
	DEFB	01DH
	DEFB	01EH
	DEFB	01FH
	DEFB	020H
	DEFB	021H
	DEFB	022H
	DEFB	023H
	DEFB	024H
	DEFB	025H
	DEFB	026H
	DEFB	027H
	DEFB	028H
	DEFB	029H
	DEFB	02AH
	DEFB	02BH
	DEFB	02CH
	DEFB	02DH
	DEFB	02EH
	DEFB	02FH
	DEFB	030H
	DEFB	031H
	DEFB	032H
	DEFB	033H
	DEFB	034H
	DEFB	035H
	DEFB	036H
	DEFB	037H
	DEFB	038H
	DEFB	039H
	DEFB	03AH
	DEFB	03BH	
	DEFB	03CH
	DEFB	03DH
	DEFB	03EH	
	DEFB	03FH
	DEFB	040H
	DEFB	041H
	DEFB	042H
	DEFB	043H
	DEFB	044H
	DEFB	045H
	DEFB	046H
	DEFB	047H
	DEFB	048H
	DEFB	049H
	DEFB	04AH
	DEFB	04BH
	DEFB	04CH
	DEFB	04DH
	DEFB	04EH
	DEFB	04FH
	DEFB	050H
	DEFB	051H
	DEFB	052H
	DEFB	053H
	DEFB	054H
	DEFB	055H
	DEFB	056H
	DEFB	057H
	DEFB	058H
	DEFB	059H
	DEFB	05AH
	DEFB	05BH
	DEFB	05CH
	DEFB	05DH
	DEFB	05EH
	DEFB	05FH
	DEFB	060H
	DEFB	061H
	DEFB	062H
	DEFB	063H
	DEFB	064H
	DEFB	065H
	DEFB	066H
	DEFB	067H
	DEFB	068H
	DEFB	069H
	DEFB	06AH
	DEFB	06BH
	DEFB	06CH
	DEFB	06DH
	DEFB	06EH
	DEFB	06FH
	DEFB	070H
	DEFB	071H
	DEFB	072H
	DEFB	073H
	DEFB	074H
	DEFB	075H
	DEFB	076H
	DEFB	077H
	DEFB	078H
	DEFB	079H
	DEFB	07AH
	DEFB	07BH
	DEFB	07CH
	DEFB	07DH
	DEFB	07EH
	DEFB	07FH
	DEFB	00FH	;INSERT TOGGLE ON/OFF
	DEFB	005H	;CURSOR UP LINE
	DEFB	018H	;CURSOR DOWN LINE
	DEFB	004H	;CURSOR RIGHT CHARACTER
	DEFB	013H	;CURSOR LEFT CHARACTER
	DEFB	085H
	DEFB	086H	
	DEFB	087H
	DEFB	01EH	;CUSOR TOP/BOTTOM OF SCREEN
	DEFB	089H
	DEFB	002H	;CURSOR LEFT/RIGHT OF LINE
	DEFB	00BH	;DELETE LINE RIGHT
	DEFB	014H	;INSERT CR LEAVE CURSOR BEFORE IT
	DEFB	019H	;DELETE LINE
	DEFB	003H	;FILE UP ONE SCREENFUL
	DEFB	012H	;FILE DOWN ONE SCREENFUL
	DEFB	07FH	;DELETE CHAR LEFT
	DEFB	091H
	DEFB	092H
	DEFB	093H
	DEFB	094H
	DEFB	095H
	DEFB	096H
	DEFB	097H
	DEFB	098H
	DEFB	01AH	;FILE UP ONE LINE
	DEFB	017H	;FILE DOWN ONE LINE
	DEFB	09BH
	DEFB	09CH
	DEFB	09DH
	DEFB	09EH
	DEFB	09FH
	DEFB	0A0H
	DEFB	0A1H
	DEFB	0A2H
	DEFB	0A3H
	DEFB	0A4H
	DEFB	0A5H
	DEFB	0A6H
	DEFB	0A7H
	DEFB	0A8H
	DEFB	0A9H
	DEFB	0AAH
	DEFB	0ABH
	DEFB	02EH	;CHANGES NUMERIC PAD , INTO .
	DEFB	0ADH
	DEFB	0AEH
	DEFB	0AFH
	DEFB	0B0H
	DEFB	0B1H
	DEFB	0B2H
	DEFB	0B3H
	DEFB	0B4H
	DEFB	0B5H
	DEFB	0B6H
	DEFB	0B7H
	DEFB	0B8H
	DEFB	0B9H
	DEFB	0BAH
	DEFB	0BBH
	DEFB	0BCH
	DEFB	0BDH
	DEFB	0BEH
	DEFB	0BFH
	DEFB	0C0H
	DEFB	0C1H
	DEFB	0C2H
	DEFB	0C3H
	DEFB	0C4H
	DEFB	0C5H
	DEFB	0C6H
	DEFB	0C7H
	DEFB	0C8H
	DEFB	0C9H
	DEFB	0CAH
	DEFB	0CBH
	DEFB	0CCH
	DEFB	0CDH
	DEFB	0CEH
	DEFB	0CFH
	DEFB	0D0H
	DEFB	0D1H
	DEFB	0D2H
	DEFB	0D3H
	DEFB	0D4H
	DEFB	0D5H
	DEFB	0D6H
	DEFB	0D7H
	DEFB	0D8H
	DEFB	0D9H
	DEFB	0DAH
	DEFB	0DBH
	DEFB	0DCH
	DEFB	0DDH
	DEFB	0DEH
	DEFB	0DFH
	DEFB	0E0H
	DEFB	0E1H
	DEFB	003H	;^C..WARM BOOT
	DEFB	0E3H
	DEFB	0E4H
	DEFB	0E5H
	DEFB	0E6H
	DEFB	0E7H
	DEFB	0E8H
	DEFB	0E9H
	DEFB	0EAH
	DEFB	0EBH
	DEFB	0ECH
	DEFB	0EDH
	DEFB	000H	;DO NEXT CHAR 4 TIMES
	DEFB	0EFH
	DEFB	0F0H
	DEFB	0F1H
	DEFB	0F2H
	DEFB	0F3H
	DEFB	0F4H
	DEFB	0F5H
	DEFB	0F6H
	DEFB	0F7H
	DEFB	0F8H
	DEFB	0F9H
	DEFB	0FAH
	DEFB	0FBH
	DEFB	0FCH
	DEFB	0FDH
	DEFB	0FEH
	DEFB	0FFH
	END
